/**
 * 薪酬明细 列表页 JS 脚本
 * @author 金杰 , maillank@qq.com
 * @since 2024-02-06 18:23:20
 */


function ListPage() {

	var settings,admin,form,table,layer,util,fox,upload,xmSelect;
	
	//模块基础路径
	const moduleURL="/service-hr/hr-salary-detail";
	const queryURL=moduleURL+'/query-paged-list';
	const deleteURL=moduleURL+'/delete';
	const batchDeleteURL=moduleURL+'/delete-by-ids';
	const getByIdURL=moduleURL+'/get-by-id';
	//
	var dataTable=null;
	var sort=null;

	/**
      * 入口函数，初始化
      */
	this.init=function(layui) {

     	admin = layui.admin,settings = layui.settings,form = layui.form,upload = layui.upload,laydate= layui.laydate;
		table = layui.table,layer = layui.layer,util = layui.util,fox = layui.foxnic,xmSelect = layui.xmSelect,dropdown=layui.dropdown;

		if(window.pageExt.list.beforeInit) {
			window.pageExt.list.beforeInit();
		}
     	//渲染表格
     	renderTable();
		//初始化搜索输入框组件
		initSearchFields();
		//绑定搜索框事件
		bindSearchEvent();
		//绑定按钮事件
		bindButtonEvent();
		//绑定行操作按钮事件
    	bindRowOperationEvent();
     }


     /**
      * 渲染表格
      */
    function renderTable() {
		$(window).resize(function() {
			fox.adjustSearchElement();
		});
		fox.adjustSearchElement();
		//
		 var marginTop=$(".search-bar").height()+$(".search-bar").css("padding-top")+$(".search-bar").css("padding-bottom")
		 $("#table-area").css("margin-top",marginTop+"px");
		//
		function renderTableInternal() {

			var ps={searchField: "$composite"};
			var contitions={};

			if(window.pageExt.list.beforeQuery){
				window.pageExt.list.beforeQuery(contitions,ps,"tableInit");
			}
			ps.searchValue=JSON.stringify(contitions);

			var templet=window.pageExt.list.templet;
			if(templet==null) {
				templet=function(field,value,row) {
					if(value==null) return "";
					return value;
				}
			}
			var h=$(".search-bar").height();
			var tableConfig={
				elem: '#data-table',
				toolbar: '#toolbarTemplate',
				defaultToolbar: ['filter', 'print',{title: fox.translate('刷新数据','','cmp:table'),layEvent: 'refresh-data',icon: 'layui-icon-refresh-3'}],
				url: queryURL,
				height: 'full-'+(h+28),
				limit: 50,
				where: ps,
				cols: [[
					{ fixed: 'left',type: 'numbers' },
					{ fixed: 'left',type:'checkbox'}
					,{ field: 'id', align:"left",fixed:false,  hide:true, sort: true  , title: fox.translate('主键') , templet: function (d) { return templet('id',d.id,d);}  }
					,{ field: 'userName', align:"left",fixed:false,  hide:false, sort: true  , title: fox.translate('姓名') , templet: function (d) { return templet('userName',d.userName,d);}  }
					,{ field: 'actionMonth', align:"left",fixed:false,  hide:false, sort: true  , title: fox.translate('月份') , templet: function (d) { return templet('actionMonth',d.actionMonth,d);}  }
					,{ field: 'personId', align:"left",fixed:false,  hide:true, sort: true  , title: fox.translate('人员'), templet: function (d) { return templet('personId' ,fox.joinLabel(d.person,"name",',','','personId'),fox.getProperty(d,["person","name"],0,'','personId'),d);}}
					,{ field: 'jobNumber', align:"left",fixed:false,  hide:false, sort: true  , title: fox.translate('工号') , templet: function (d) { return templet('jobNumber',d.jobNumber,d);}  }
					,{ field: 'orgId', align:"left",fixed:false,  hide:false, sort: true  , title: fox.translate('部门') , templet: function (d) { return templet('orgId',d.orgId,d);}  }
					,{ field: 'bank', align:"left",fixed:false,  hide:false, sort: true  , title: fox.translate('银行名称') , templet: function (d) { return templet('bank',d.bank,d);}  }
					,{ field: 'bankAccount', align:"left",fixed:false,  hide:false, sort: true  , title: fox.translate('银行账户') , templet: function (d) { return templet('bankAccount',d.bankAccount,d);}  }
					,{ field: 'status', align:"left",fixed:false,  hide:false, sort: true  , title: fox.translate('状态'), templet:function (d){ return templet('status',fox.getEnumText(RADIO_STATUS_DATA,d.status,'','status'),d);}}
					,{ field: 'payAmount', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('应发金额') , templet: function (d) { return templet('payAmount',d.payAmount,d);}  }
					,{ field: 'issuedAmount', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('实发金额') , templet: function (d) { return templet('issuedAmount',d.issuedAmount,d);}  }
					,{ field: 'baseSalary', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('基本工资') , templet: function (d) { return templet('baseSalary',d.baseSalary,d);}  }
					,{ field: 'postSalary', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('岗位工资') , templet: function (d) { return templet('postSalary',d.postSalary,d);}  }
					,{ field: 'workingYearsSalary', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('工龄工资') , templet: function (d) { return templet('workingYearsSalary',d.workingYearsSalary,d);}  }
					,{ field: 'fixedSalary', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('固定补贴') , templet: function (d) { return templet('fixedSalary',d.fixedSalary,d);}  }
					,{ field: 'achievementSalary', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('绩效补贴') , templet: function (d) { return templet('achievementSalary',d.achievementSalary,d);}  }
					,{ field: 'overtimeSalary', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('加班补贴') , templet: function (d) { return templet('overtimeSalary',d.overtimeSalary,d);}  }
					,{ field: 'communicationSalary', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('通讯补贴') , templet: function (d) { return templet('communicationSalary',d.communicationSalary,d);}  }
					,{ field: 'trafficSalary', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('交通补贴') , templet: function (d) { return templet('trafficSalary',d.trafficSalary,d);}  }
					,{ field: 'housingSalary', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('住房补贴') , templet: function (d) { return templet('housingSalary',d.housingSalary,d);}  }
					,{ field: 'highTemperatureSalary', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('高温补贴') , templet: function (d) { return templet('highTemperatureSalary',d.highTemperatureSalary,d);}  }
					,{ field: 'otherSalary', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('其他补贴') , templet: function (d) { return templet('otherSalary',d.otherSalary,d);}  }
					,{ field: 'commissionSalary', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('提成工资') , templet: function (d) { return templet('commissionSalary',d.commissionSalary,d);}  }
					,{ field: 'unitTimeSalary', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('计时工资') , templet: function (d) { return templet('unitTimeSalary',d.unitTimeSalary,d);}  }
					,{ field: 'unitNumberSalary', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('计件工资') , templet: function (d) { return templet('unitNumberSalary',d.unitNumberSalary,d);}  }
					,{ field: 'punishSalary', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('处罚金额') , templet: function (d) { return templet('punishSalary',d.punishSalary,d);}  }
					,{ field: 'daySalary', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('每日工资') , templet: function (d) { return templet('daySalary',d.daySalary,d);}  }
					,{ field: 'deductKq', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('扣除考勤') , templet: function (d) { return templet('deductKq',d.deductKq,d);}  }
					,{ field: 'deductGh', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('扣除工会') , templet: function (d) { return templet('deductGh',d.deductGh,d);}  }
					,{ field: 'deductOther', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('扣除其他') , templet: function (d) { return templet('deductOther',d.deductOther,d);}  }
					,{ field: 'deductPersonalTaxRed', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('个税抵扣') , templet: function (d) { return templet('deductPersonalTaxRed',d.deductPersonalTaxRed,d);}  }
					,{ field: 'ptGrsds', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('个人所得税') , templet: function (d) { return templet('ptGrsds',d.ptGrsds,d);}  }
					,{ field: 'ptDkjs', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('抵扣基数') , templet: function (d) { return templet('ptDkjs',d.ptDkjs,d);}  }
					,{ field: 'jxpjLevel', align:"left",fixed:false,  hide:false, sort: true  , title: fox.translate('绩效评级') , templet: function (d) { return templet('jxpjLevel',d.jxpjLevel,d);}  }
					,{ field: 'workOvertimeHCnt', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('加班时长') , templet: function (d) { return templet('workOvertimeHCnt',d.workOvertimeHCnt,d);}  }
					,{ field: 'lateCnt', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('迟到次数') , templet: function (d) { return templet('lateCnt',d.lateCnt,d);}  }
					,{ field: 'businessTripsCnt', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('出差次数') , templet: function (d) { return templet('businessTripsCnt',d.businessTripsCnt,d);}  }
					,{ field: 'personalLeaveCnt', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('事假天数') , templet: function (d) { return templet('personalLeaveCnt',d.personalLeaveCnt,d);}  }
					,{ field: 'annualLeaveCnt', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('年假天数') , templet: function (d) { return templet('annualLeaveCnt',d.annualLeaveCnt,d);}  }
					,{ field: 'workDayCnt', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('工作天数') , templet: function (d) { return templet('workDayCnt',d.workDayCnt,d);}  }
					,{ field: 'ptSlPct', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('税率') , templet: function (d) { return templet('ptSlPct',d.ptSlPct,d);}  }
					,{ field: 'welfareZfgjjBase', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('住房公积金基数') , templet: function (d) { return templet('welfareZfgjjBase',d.welfareZfgjjBase,d);}  }
					,{ field: 'welfareZfgjjPerson', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('住房公积金个人') , templet: function (d) { return templet('welfareZfgjjPerson',d.welfareZfgjjPerson,d);}  }
					,{ field: 'welfareZfgjjCompany', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('住房公积金公司') , templet: function (d) { return templet('welfareZfgjjCompany',d.welfareZfgjjCompany,d);}  }
					,{ field: 'welfareZfgjjValue', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('住房缴费') , templet: function (d) { return templet('welfareZfgjjValue',d.welfareZfgjjValue,d);}  }
					,{ field: 'welfaerYlbxBase', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('养老保险基数') , templet: function (d) { return templet('welfaerYlbxBase',d.welfaerYlbxBase,d);}  }
					,{ field: 'welfaerYlbxPerson', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('养老保险个人') , templet: function (d) { return templet('welfaerYlbxPerson',d.welfaerYlbxPerson,d);}  }
					,{ field: 'welfaerYlbxCompany', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('养老保险公司') , templet: function (d) { return templet('welfaerYlbxCompany',d.welfaerYlbxCompany,d);}  }
					,{ field: 'welfaerYlbxValue', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('养老缴费') , templet: function (d) { return templet('welfaerYlbxValue',d.welfaerYlbxValue,d);}  }
					,{ field: 'welfaerGsbxBase', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('工伤保险基数') , templet: function (d) { return templet('welfaerGsbxBase',d.welfaerGsbxBase,d);}  }
					,{ field: 'welfaerGsbxPerson', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('工伤保险个人') , templet: function (d) { return templet('welfaerGsbxPerson',d.welfaerGsbxPerson,d);}  }
					,{ field: 'welfaerGsbxCompany', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('工伤保险公司') , templet: function (d) { return templet('welfaerGsbxCompany',d.welfaerGsbxCompany,d);}  }
					,{ field: 'welfaerGsbxValue', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('工伤缴费') , templet: function (d) { return templet('welfaerGsbxValue',d.welfaerGsbxValue,d);}  }
					,{ field: 'welfaerYrbxBase', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('医疗保险基数') , templet: function (d) { return templet('welfaerYrbxBase',d.welfaerYrbxBase,d);}  }
					,{ field: 'welfaerYrbxPerson', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('医疗保险个人') , templet: function (d) { return templet('welfaerYrbxPerson',d.welfaerYrbxPerson,d);}  }
					,{ field: 'welfaerYrbxCompany', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('医疗保险公司') , templet: function (d) { return templet('welfaerYrbxCompany',d.welfaerYrbxCompany,d);}  }
					,{ field: 'welfaerYrbxValue', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('医疗缴费') , templet: function (d) { return templet('welfaerYrbxValue',d.welfaerYrbxValue,d);}  }
					,{ field: 'welfaerSybxBase', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('生育保险基数') , templet: function (d) { return templet('welfaerSybxBase',d.welfaerSybxBase,d);}  }
					,{ field: 'welfaerSybxPerson', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('生育保险个人') , templet: function (d) { return templet('welfaerSybxPerson',d.welfaerSybxPerson,d);}  }
					,{ field: 'welfaerSybxCompany', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('生育保险公司') , templet: function (d) { return templet('welfaerSybxCompany',d.welfaerSybxCompany,d);}  }
					,{ field: 'welfaerSybxValue', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('生育缴费') , templet: function (d) { return templet('welfaerSybxValue',d.welfaerSybxValue,d);}  }
					,{ field: 'welfaerSyebxBase', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('失业保险基数') , templet: function (d) { return templet('welfaerSyebxBase',d.welfaerSyebxBase,d);}  }
					,{ field: 'welfaerSyebxPerson', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('失业保险个人') , templet: function (d) { return templet('welfaerSyebxPerson',d.welfaerSyebxPerson,d);}  }
					,{ field: 'welfaerSyebxCompany', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('失业保险公司') , templet: function (d) { return templet('welfaerSyebxCompany',d.welfaerSyebxCompany,d);}  }
					,{ field: 'welfaerSyebxValue', align:"right",fixed:false,  hide:false, sort: true  , title: fox.translate('失业缴费') , templet: function (d) { return templet('welfaerSyebxValue',d.welfaerSyebxValue,d);}  }
					,{ field: 'personalStatus', align:"left",fixed:false,  hide:false, sort: true  , title: fox.translate('专项抵扣启用'), templet:function (d){ return templet('personalStatus',fox.getEnumText(RADIO_PERSONALSTATUS_DATA,d.personalStatus,'','personalStatus'),d);}}
					,{ field: 'personalTaxZnjy', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('子女教育') , templet: function (d) { return templet('personalTaxZnjy',d.personalTaxZnjy,d);}  }
					,{ field: 'personalTaxJxjy', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('继续教育') , templet: function (d) { return templet('personalTaxJxjy',d.personalTaxJxjy,d);}  }
					,{ field: 'personalTaxDbyl', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('大病医疗') , templet: function (d) { return templet('personalTaxDbyl',d.personalTaxDbyl,d);}  }
					,{ field: 'personalTaxZfdk', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('住房贷款') , templet: function (d) { return templet('personalTaxZfdk',d.personalTaxZfdk,d);}  }
					,{ field: 'personalTaxZfzj', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('住房租金') , templet: function (d) { return templet('personalTaxZfzj',d.personalTaxZfzj,d);}  }
					,{ field: 'personalTaxSylr', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('赡养老人') , templet: function (d) { return templet('personalTaxSylr',d.personalTaxSylr,d);}  }
					,{ field: 'personalTaxErzh', align:"right",fixed:false,  hide:true, sort: true  , title: fox.translate('幼儿照护') , templet: function (d) { return templet('personalTaxErzh',d.personalTaxErzh,d);}  }
					,{ field: 'effectTime', align:"right", fixed:false, hide:false, sort: true   ,title: fox.translate('生效时间') ,templet: function (d) { return templet('effectTime',fox.dateFormat(d.effectTime,"yyyy-MM-dd HH:mm:ss"),d); }  }
					,{ field: 'notes', align:"left",fixed:false,  hide:false, sort: true  , title: fox.translate('备注') , templet: function (d) { return templet('notes',d.notes,d);}  }
					,{ field: 'batchCode', align:"left",fixed:false,  hide:false, sort: true  , title: fox.translate('批次号') , templet: function (d) { return templet('batchCode',d.batchCode,d);}  }
					,{ field: 'operMsg', align:"left",fixed:false,  hide:false, sort: true  , title: fox.translate('操作说明') , templet: function (d) { return templet('operMsg',d.operMsg,d);}  }
					,{ field: 'createTime', align:"right", fixed:false, hide:false, sort: true   ,title: fox.translate('创建时间') ,templet: function (d) { return templet('createTime',fox.dateFormat(d.createTime,"yyyy-MM-dd HH:mm:ss"),d); }  }
					,{ field: 'personCardNumber', align:"",fixed:false,  hide:false, sort: false  , title: fox.translate('卡号') , templet: function (d) { return templet('personCardNumber',d.personCardNumber,d);}  }
					,{ field: 'personJobNumber', align:"",fixed:false,  hide:false, sort: false  , title: fox.translate('工号') , templet: function (d) { return templet('personJobNumber',d.personJobNumber,d);}  }
					,{ field: fox.translate('空白列','','cmp:table'), align:"center", hide:false, sort: false, title: "",minWidth:8,width:8,unresize:true}
					,{ field: 'row-ops', fixed: 'right', align: 'center', toolbar: '#tableOperationTemplate', title: fox.translate('操作','','cmp:table'), width: 160 }
				]],
				done: function (data) {
					lockSwitchInputs();
					window.pageExt.list.afterQuery && window.pageExt.list.afterQuery(data);
				},
				footer : {
					exportExcel :  admin.checkAuth(AUTH_PREFIX+":export") ,
					importExcel :  admin.checkAuth(AUTH_PREFIX+":import")?{
						params : {} ,
						callback : function(r) {
							if(r.success) {
								layer.msg(fox.translate('数据导入成功','','cmp:table')+"!");
							} else {
								layer.msg(fox.translate('数据导入失败','','cmp:table')+"!");
							}
							// 是否执行后续逻辑：错误提示
							return false;
						}
					}:false 
				}
			};
			window.pageExt.list.beforeTableRender && window.pageExt.list.beforeTableRender(tableConfig);
			dataTable=fox.renderTable(tableConfig);
			//绑定排序事件
			table.on('sort(data-table)', function(obj){
			  refreshTableData(obj.sortField,obj.type);
			});
			window.pageExt.list.afterTableRender && window.pageExt.list.afterTableRender();
		}
		setTimeout(renderTableInternal,1);
    };

	/**
	 * 刷新单号数据
	 * */
	function refreshRowData(data,remote) {
		var context=dataTable.getDataRowContext( { id : data.id } );
		if(context==null) return;
		if(remote) {
			admin.post(getByIdURL, { id : data.id }, function (r) {
				if (r.success) {
					data = r.data;
					context.update(data);
					fox.renderFormInputs(form);
					lockSwitchInputs();
					window.pageExt.list.afterRefreshRowData && window.pageExt.list.afterRefreshRowData(data,remote,context);
				} else {
					fox.showMessage(data);
				}
			});
		} else {
			context.update(data);
			fox.renderFormInputs(form);
			lockSwitchInputs();
			window.pageExt.list.afterRefreshRowData && window.pageExt.list.afterRefreshRowData(data,remote,context);
		}
	}



	function lockSwitchInputs() {
	}

	function lockSwitchInput(field) {
		var inputs=$("[lay-id=data-table]").find("td[data-field='"+field+"']").find("input");
		var switchs=$("[lay-id=data-table]").find("td[data-field='"+field+"']").find(".layui-form-switch");
		inputs.attr("readonly", "yes");
		inputs.attr("disabled", "yes");
		switchs.addClass("layui-disabled");
		switchs.addClass("layui-checkbox-disabled");
		switchs.addClass("layui-form-switch-disabled");
	}

	/**
      * 刷新表格数据
      */
	function refreshTableData(sortField,sortType,reset) {
		function getSelectedValue(id,prop) { var xm=xmSelect.get(id,true); return xm==null ? null : xm.getValue(prop);}
		var value = {};
		value.userName={ inputType:"button",value: $("#userName").val() ,fuzzy: true,splitValue:false,valuePrefix:"",valueSuffix:"" };
		value.actionMonth={ inputType:"button",value: $("#actionMonth").val()};
		value.jobNumber={ inputType:"button",value: $("#jobNumber").val() ,fuzzy: true,splitValue:false,valuePrefix:"",valueSuffix:"" };
		value.status={ inputType:"radio_box", value: getSelectedValue("#status","value"), label:getSelectedValue("#status","nameStr") };
		value.personalStatus={ inputType:"radio_box", value: getSelectedValue("#personalStatus","value"), label:getSelectedValue("#personalStatus","nameStr") };
		value.batchCode={ inputType:"button",value: $("#batchCode").val()};
		var ps={searchField:"$composite"};
		if(window.pageExt.list.beforeQuery){
			if(!window.pageExt.list.beforeQuery(value,ps,"refresh")) return;
		}
		ps.searchValue=JSON.stringify(value);
		if(sortField) {
			ps.sortField=sortField;
			ps.sortType=sortType;
			sort={ field : sortField,type : sortType} ;
		} else {
			if(sort) {
				ps.sortField=sort.field;
				ps.sortType=sort.type;
			} 		}
		if(reset) {
			table.reload('data-table', { where : ps , page:{ curr:1 } });
		} else {
			table.reload('data-table', { where : ps });
		}
	}


	/**
	  * 获得已经选中行的数据,不传入 field 时，返回所有选中的记录，指定 field 时 返回指定的字段集合
	  */
	function getCheckedList(field) {
		var checkStatus = table.checkStatus('data-table');
		var data = checkStatus.data;
		if(!field) return data;
		for(var i=0;i<data.length;i++) data[i]=data[i][field];
		return data;
	}

	/**
	 * 重置搜索框
	 */
	function resetSearchFields() {
		$('#search-field').val("");
		$('#search-input').val("");
		layui.form.render();
	}

	function initSearchFields() {

		fox.switchSearchRow(1);

		//渲染 status 搜索框
		fox.renderSelectBox({
			el: "status",
			size: "small",
			radio: true,
			on: function(data){
				setTimeout(function () {
					window.pageExt.list.onSelectBoxChanged && window.pageExt.list.onSelectBoxChanged("status",data.arr,data.change,data.isAdd);
				},1);
			},
			//toolbar: {show:true,showIcon:true,list:["CLEAR","REVERSE"]},
			transform:function(data) {
				//要求格式 :[{name: '水果', value: 1},{name: '蔬菜', value: 2}]
				var opts=[];
				if(!data) return opts;
				for (var i = 0; i < data.length; i++) {
					if(window.pageExt.list.selectBoxDataTransform) {
						opts.push(window.pageExt.list.selectBoxDataTransform("status",{data:data[i],name:data[i].text,value:data[i].code},data[i],data,i));
					} else {
						opts.push({data:data[i],name:data[i].text,value:data[i].code});
					}
				}
				return opts;
			}
		});
		//渲染 personalStatus 搜索框
		fox.renderSelectBox({
			el: "personalStatus",
			size: "small",
			radio: true,
			on: function(data){
				setTimeout(function () {
					window.pageExt.list.onSelectBoxChanged && window.pageExt.list.onSelectBoxChanged("personalStatus",data.arr,data.change,data.isAdd);
				},1);
			},
			//toolbar: {show:true,showIcon:true,list:["CLEAR","REVERSE"]},
			transform:function(data) {
				//要求格式 :[{name: '水果', value: 1},{name: '蔬菜', value: 2}]
				var opts=[];
				if(!data) return opts;
				for (var i = 0; i < data.length; i++) {
					if(window.pageExt.list.selectBoxDataTransform) {
						opts.push(window.pageExt.list.selectBoxDataTransform("personalStatus",{data:data[i],name:data[i].text,value:data[i].code},data[i],data,i));
					} else {
						opts.push({data:data[i],name:data[i].text,value:data[i].code});
					}
				}
				return opts;
			}
		});
		fox.renderSearchInputs();
		window.pageExt.list.afterSearchInputReady && window.pageExt.list.afterSearchInputReady();
	}

	/**
	 * 绑定搜索框事件
	 */
	function bindSearchEvent() {
		//回车键查询
        $(".search-input").keydown(function(event) {
			if(event.keyCode !=13) return;
		  	refreshTableData(null,null,true);
        });

        // 搜索按钮点击事件
        $('#search-button').click(function () {
			refreshTableData(null,null,true);
        });

		// 搜索按钮点击事件
		$('#search-button-advance').click(function () {
			fox.switchSearchRow(1,function (ex){
				if(ex=="1") {
					$('#search-button-advance span').text("关闭");
				} else {
					$('#search-button-advance span').text("更多");
				}
			});
		});

	}

	/**
	 * 绑定按钮事件
	  */
	function bindButtonEvent() {

		//头工具栏事件
		table.on('toolbar(data-table)', function(obj){
			var checkStatus = table.checkStatus(obj.config.id);
			var selected=getCheckedList("id");
			if(window.pageExt.list.beforeToolBarButtonEvent) {
				var doNext=window.pageExt.list.beforeToolBarButtonEvent(selected,obj);
				if(!doNext) return;
			}
			switch(obj.event){
				case 'create':
					admin.putTempData('hr-salary-detail-form-data', {});
					openCreateFrom();
					break;
				case 'batch-del':
					batchDelete(selected);
					break;
				case 'tool-valid-data':
					window.pageExt.list.validData && window.pageExt.list.validData(selected,obj);
					break;
				case 'tool-calculate-data':
					window.pageExt.list.calculateData && window.pageExt.list.calculateData(selected,obj);
					break;
				case 'tool-salary-export':
					window.pageExt.list.salaryExport && window.pageExt.list.salaryExport(selected,obj);
					break;
				case 'tool-salary-import':
					window.pageExt.list.salaryImport && window.pageExt.list.salaryImport(selected,obj);
					break;
				case 'refresh-data':
					refreshTableData();
					break;
				case 'other':
					break;
			};
		});


		//添加按钮点击事件
        function openCreateFrom() {
        	//设置新增是初始化数据
        	var data={};
			admin.putTempData('hr-salary-detail-form-data-form-action', "create",true);
            showEditForm(data);
        };

        //批量删除按钮点击事件
        function batchDelete(selected) {

        	if(window.pageExt.list.beforeBatchDelete) {
				var doNext=window.pageExt.list.beforeBatchDelete(selected);
				if(!doNext) return;
			}

			var ids=getCheckedList("id");
            if(ids.length==0) {
				top.layer.msg(fox.translate('请选择需要删除的'+'薪酬明细'+"!"));
            	return;
            }
            //调用批量删除接口
			top.layer.confirm(fox.translate('确定删除已选中的'+'薪酬明细'+'吗？'), function (i) {
                top.layer.close(i);
				admin.post(batchDeleteURL, { ids: ids }, function (data) {
                    if (data.success) {
						if(window.pageExt.list.afterBatchDelete) {
							var doNext=window.pageExt.list.afterBatchDelete(data);
							if(!doNext) return;
						}
						fox.showMessage(data);
                        refreshTableData();
                    } else {
						if(data.data>0) {
							refreshTableData();
						}
						fox.showMessage(data);
                    }
                },{delayLoading:200,elms:[$("#delete-button")]});
			});
        }
	}

    /**
     * 绑定行操作按钮事件
     */
    function bindRowOperationEvent() {
		// 工具条点击事件
		table.on('tool(data-table)', function (obj) {
			var data = obj.data;
			var layEvent = obj.event;

			if(window.pageExt.list.beforeRowOperationEvent) {
				var doNext=window.pageExt.list.beforeRowOperationEvent(data,obj);
				if(!doNext) return;
			}

			admin.putTempData('hr-salary-detail-form-data-form-action', "",true);
			if (layEvent === 'edit') { // 修改
				top.layer.load(2);
				top.layer.load(2);
				admin.post(getByIdURL, { id : data.id }, function (data) {
					top.layer.closeAll('loading');
					if(data.success) {
						admin.putTempData('hr-salary-detail-form-data-form-action', "edit",true);
						showEditForm(data.data);
					} else {
						 fox.showMessage(data);
					}
				});
			} else if (layEvent === 'view') { // 查看
				top.layer.load(2);
				admin.post(getByIdURL, { id : data.id }, function (data) {
					top.layer.closeAll('loading');
					if(data.success) {
						admin.putTempData('hr-salary-detail-form-data-form-action', "view",true);
						showEditForm(data.data);
					} else {
						fox.showMessage(data);
					}
				});
			}
			else if (layEvent === 'del') { // 删除

				if(window.pageExt.list.beforeSingleDelete) {
					var doNext=window.pageExt.list.beforeSingleDelete(data);
					if(!doNext) return;
				}

				top.layer.confirm(fox.translate('确定删除此'+'薪酬明细'+'吗？'), function (i) {
					top.layer.close(i);
					admin.post(deleteURL, { id : data.id }, function (data) {
						top.layer.closeAll('loading');
						if (data.success) {
							if(window.pageExt.list.afterSingleDelete) {
								var doNext=window.pageExt.list.afterSingleDelete(data);
								if(!doNext) return;
							}
							fox.showMessage(data);
							refreshTableData();
						} else {
							fox.showMessage(data);
						}
					},{delayLoading:100, elms:[$(".ops-delete-button[data-id='"+data.id+"']")]});
				});
			}
			else if (layEvent === 'reset-data') { // 重置
				window.pageExt.list.resetData(data,this);
			}
			
		});

    };

    /**
     * 打开编辑窗口
     */
	function showEditForm(data) {
		if(window.pageExt.list.beforeEdit) {
			var doNext=window.pageExt.list.beforeEdit(data);
			if(!doNext) return;
		}
		var action=admin.getTempData('hr-salary-detail-form-data-form-action');
		var queryString="";
		if(data && data.id) queryString='id=' + data.id;
		if(window.pageExt.list.makeFormQueryString) {
			queryString=window.pageExt.list.makeFormQueryString(data,queryString,action);
		}
		admin.putTempData('hr-salary-detail-form-data', data);
		var area=admin.getTempData('hr-salary-detail-form-area');
		var height= (area && area.height) ? area.height : ($(window).height()*0.6);
		var top= (area && area.top) ? area.top : (($(window).height()-height)/2);
		var title = fox.translate('薪酬明细');
		if(action=="create") title=fox.translate('添加','','cmp:table')+title;
		else if(action=="edit") title=fox.translate('修改','','cmp:table')+title;
		else if(action=="view") title=fox.translate('查看','','cmp:table')+title;

		admin.popupCenter({
			title: title,
			resize: false,
			offset: [top,null],
			area: ["95%",height+"px"],
			type: 2,
			id:"hr-salary-detail-form-data-win",
			content: '/business/hr/salary_detail/salary_detail_form.html' + (queryString?("?"+queryString):""),
			finish: function () {
				if(action=="create") {
					refreshTableData();
				}
				if(action=="edit") {
					false?refreshTableData():refreshRowData(data,true);
				}
			}
		});
	};

	window.module={
		refreshTableData: refreshTableData,
		refreshRowData: refreshRowData,
		getCheckedList: getCheckedList,
		showEditForm: showEditForm
	};

	window.pageExt.list.ending && window.pageExt.list.ending();

};


layui.use(['form', 'table', 'util', 'settings', 'admin', 'upload','foxnic','xmSelect','laydate','dropdown'],function() {
	var task=setInterval(function (){
		if(!window["pageExt"]) return;
		clearInterval(task);
		(new ListPage()).init(layui);
	},1);
});